#include <iostream>
#include <string>
#include <ctemplate/template.h>

int main()
{
    std::string in_html = "./test.html";
    std::string value = "你好，世界";

    // 形成数据字典
    ctemplate::TemplateDictionary root("test"); // unordered_map<> test;
    root.SetValue("key", value);                // test.insert({})

    // 获取被渲染网页对象
    ctemplate::Template *tpl = ctemplate::Template::GetTemplate(in_html, ctemplate::DO_NOT_STRIP);

    //添加字典数据到网页中
    std::string out_html;
    tpl->Expand(&out_html,&root);

    //完成渲染
    std::cout<<out_html<<std::endl;
    return 0;
}

/* #include <iostream>
#include<vector>
#include<boost/algorithm/string.hpp> */

/* #include <sys/time.h>
#include <sys/resource.h>
#include <unistd.h>
#include <signal.h>
#include <jsoncpp/json/json.h> */

/* void handler(int signo)
{
    std::cout << "signo: " << signo << std::endl;
}
 */
/* int main()
{
    /* std::vector<std::string> tokens;
    const std::string str="1:判断回文数:简单:1:30000";
    const std::string sep=":";                                           //压缩
    boost::split(tokens,str,boost::is_any_of(sep),boost::algorithm::token_compress_on);

    for(auto &iter:tokens)
    {
        std::cout<<iter<<std::endl;
    } */

// 序列化工作
// 将结构化数据转换成为一个字符串
// Value是一个Json的中间类，可以填充KV值
/*  Json::Value root;
 root["code"] = "mycode";
 root["user"] = "Ca1m";
 root["age"] = "18";

 //Json::StyledWriter writer;
 Json::FastWriter writer;
 std::string str = writer.write(root);
 std::cout << str << std::endl; */

/*    return 0;
} */

/*  // 资源不足，导致os终止进程，是通过信号终止的
    for (int i = 1; i <= 31; i++)
    {
        signal(i, handler);
    }
    // 限制累计运行时长
    struct rlimit r;
    r.rlim_cur=1;//进程累计秒数
    r.rlim_max=RLIM_INFINITY;//无穷大
    setrlimit(RLIMIT_CPU,&r);
    while(1);

    /* struct rlimit r;
    r.rlim_cur = 1024 * 1024 * 20; // 进程累计秒数
    r.rlim_max = RLIM_INFINITY;    // 无穷大
    setrlimit(RLIMIT_AS, &r);      // 时间不能超过r

    int count = 0;
    while (true)
    {
        int *p = new int[1024 * 1024];
        count++;
        std::cout << "size:" << count << std::endl;
        sleep(1);
    } */